エラーコード「Vim:E119」を関連ライブラリのバージョンアップで対処してみた
はじめに
Scalaコードの編集にIntelliJとneovimを併用しており、依存モジュールの検証にはIntelliJを、単純な編集にはneovimと使い分けています。
neovimで編集する際にはcoc.nvimを併用していたのですが、ふと拡張機能を確認しようと:CocList extention
と実行してみたところうんともすんとも言いません。まさかと思い、:CocCommand
も試してみましたが反応しません。
そこで、試しに:CocConfig
を実行してみると、設定ファイルが開きました。つまり、拡張機能が死んでいる。
同じような状況に陥った人はいるのかと検索してみたところ、Gitterのcoc.nvimチャンネルにログがのこっていました。ただ、誰も反応していなかったので解消は出来ていなかったようです。
素のvimで編集していた状態と変わらないため、便利なIntelliJに一本化することも考えました。が、ものは試しと弄ってみた結果、正常に動作したようです。過程について書き残してみました。
Vim:E119: 関数の引数が足りません: coc#util#get_bufoptions
発生したエラーについて先に挙げておきます。
Error on create buffer: Error: request error nvim_call_function - Vim:E119: 関数の引数が足りません: coc#util#get_bufoptions at transport.request (~/.cache/dein/repos/github.com/neoclide/coc.nvim/node_modules/@chemzqm/neovim/lib/api/Base.js:40:32) at pending.set (~/.cache/dein/repos/github.com/neoclide/coc.nvim/node_modules/@chemzqm/neovim/lib/transport/nvim.js:116:13) at NvimTransport.parseMessage (~/.cache/dein/repos/github.com/neoclide/coc.nvim/node_modules/@chemzqm/neovim/lib/transport/nvim.js:57:17) at DecodeStream.NvimTransport.decodeStream.on (~/.cache/dein/repos/github.com/neoclide/coc.nvim/node_modules/@chemzqm/neovim/lib/transport/nvim.js:27:18) at DecodeStream.emit (events.js:198:13) at addChunk (_stream_readable.js:288:12) at readableAddChunk (_stream_readable.js:269:11) at DecodeStream.Readable.push (_stream_readable.js:224:10) at DecodeStream.Transform.push (_stream_transform.js:151:32) at DecodeBuffer.DecodeStream.decoder.push (~/.cache/dein/repos/github.com/neoclide/coc.nvim/node_modules/msgpack-lite/lib/decode-stream.js:24:12)
とりあえず、とても面倒な状況になったことだけは理解しました。forkして弄るにも、型が違うならまだしも引数が足りない状況です。
おなじエラーコードになった例についても検索して見つけました。
9月 13 2019 02:43 Hey, many thanks for the program. I am getting this error currently: Error: request error nvim_call_function - Vim:E119: Not enough arguments for function: coc#list#create
これに対するレスポンスは見つからず。自力でなんとかする必要があるということです。
バージョン更新を試みる
:CocInstall
で追加インストールしたものがいずれも機能していないことから、各プラグインは横においておき、機能させるために必要なライブラリに焦点を絞りました。最低限、以下3つのライブラリで動作の整合性が維持されなければなりません。
- neovim
- coc.nvim
- metals
久々に更新を行い、結果以下の通り。
% brew upgrade neovim Warning: neovim 0.4.4 already installed
% coursier bootstrap \ --java-opt -Xss4m \ --java-opt -Xms100m \ --java-opt -Dmetals.client=vim-lsc \ org.scalameta:metals_2.12:0.9.7 \ -r bintray:scalacenter/releases \ -r sonatype:snapshots \ -o /usr/local/bin/metals-vim -f Wrote /usr/local/bin/metals-vim % metals-vim --version metals 0.9.7 # Note: # supported Scala versions: 0.26.0, 0.27.0-RC1, 2.11.12, 2.12.10, 2.12.11, 2.12.12, 2.12.8, 2.12.9, 2.13.0, 2.13.1, 2.13.2, 2.13.3, 2.13.4, 3.0.0-M1, 3.0.0-M2
残るはcoc.nvimですが、deinでの更新を行ってもバージョンがそのままのようで、dein.tomlの設定を変更しました。
before | after | |
---|---|---|
[[plugins]] |
[[plugins]] |
大きな違いとしては rev に release と指定した辺り。それまでは最新を引っ張っていなかったはずです。
結果
無事コマンドが実行できるようになりました。
あとがき
更新の手間がそれなりにあるものの、一度正常になってしまえば後は調整あるのみです。
滅多にないかもしれませんが、同等のエラーに遭遇した場合の参考になれば幸いです。